﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Input;
using Puzzler.Common;

namespace Puzzler.Plugin.Interface
{
    public interface IPuzzleInputHandler : IPuzzlePluginAction
    {
        #region Input

        #region Mouse

        /// <summary>
        /// Is called if the left mouse button goes down
        /// </summary>
        /// <param name="e">Mouse-Event</param>
        /// <param name="point">Point of click relative to canvas</param>
        /// <returns>Action result to run action after call</returns>
        void OnLeftMouseButtonDown(Point point, MouseButtonEventArgs e);

        void OnLeftMouseButtonUp(Point point, MouseButtonEventArgs e);
        void OnRightMouseButtonDown(Point point, MouseButtonEventArgs e);
        void OnRightMouseButtonUp(Point point, MouseButtonEventArgs e);
        void OnMouseMove(Point point, MouseEventArgs e);
        void OnMouseWheel(Point point, MouseWheelEventArgs e);

        #endregion

        #region Key

        void OnKeyDown(KeyEventArgs e);
        void OnKeyUp(KeyEventArgs e);

        #endregion

        #endregion
    }
}
